﻿using Newtonsoft.Json.Linq;
using Wicture.DbRESTFul.SQL;
using Wicture.EPC.Service.V1.Repository;

namespace Wicture.EPC.Service.V1
{
    /// <summary>
    /// 查询拦截器，对特殊的品牌的接口进行特殊实现，实用于各种特殊情况的处理。
    /// </summary>
    public interface IQueryInterceptor
    {
        /// <summary>
        /// 适用的品牌
        /// </summary>
        string[] BrandCodes { get; }

        object ModelSelector(DbRESTFulRepository repository, JObject param);

        object QueryModel(DbRESTFulRepository repository, JObject param);

        object QueryMainGroup(DbRESTFulRepository repository, JObject param);

        object QuerySubGroup(DbRESTFulRepository repository, JObject param);

        object QueryParts(DbRESTFulRepository repository, JObject param);

        object QueryPartDetail(DbRESTFulRepository repository, JObject param);

        object QueryHotPoints(DbRESTFulRepository repository, JObject param);

        object QueryVins(DbRESTFulRepository repository, JObject param);
        object GetCrumbs(DbRESTFulRepository epcRepository, JObject param);
        object SearchParts(DbRESTFulRepository epcRepository, JObject param);
        object QueryAllPartsByVin(DbRESTFulRepository epcRepository, JObject param);
        object RealTimeQueryPartPrice(DbRESTFulRepository repository, JObject param);
        object QueryFitModels(DbRESTFulRepository repository, JObject param);
        object QueryMaintainParts(DbRESTFulRepository repository, JObject param);
        object RealTimeQueryOEMStock(DbRESTFulRepository repository, JObject param);
    }
}
